<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
    </head>
    <body>
        <script>
            /* 
            注意：这题求的是左叶子节点的和，不是二叉树的左侧节点，
            所以不能直接用层序遍历。

            左叶子节点：根节点的左孩子不为空，左孩子节点的左右子节点为空
            所以需要先找出所有的左孩子，然后判断其是否为叶子节点即可
            */

            var sumOfLeftLeaves = function (root) {
                let sum = 0
                function preOrder(root, isLeft) {
                    if (!root) return null
                    if (isLeft) {
                        //如果当前节点是左节点
                        if (!root.left && !root.right) {
                            sum += root.val
                        }
                    }
                    preOrder(root.left, true)
                    preOrder(root.right, false)
                }
                preOrder(root, false)
                return sum
            }
        </script>
    </body>
</html>
